WordPressをAWS上に構築すると得られるメリット まとめ
はじめに
最近、WordPressに興味が出てきたのでAWS上に構築して勉強しているのですが、AWSとWordPressって相性いいんじゃないかと思うことが何点かありました。そこで自分が気づいたWordPressをAWSに構築するメリットをまとめたいと思います。今回はWordPressの4.2.2 を使って試しています。
WordPressをAWSに構築すると得られるメリット一覧
- 静的コンテンツをAWSのサービスから配信できる
- ローカルに静的コンテンツを置かないことでスケールアウトできる
- 構築したHTMLファイルをS3でホスティングできる
- 簡単にWordPressのバックアップが作成できる
- Web開発に便利なサービスが使える
- Elastic Beanstalkを使って簡単に構築できる
- [おまけ]Amazon SESと連携できる
1.静的コンテンツをAWSのサービスから配信できる
WordPressは画像ファイルなどの静的コンテンツはデフォルトの設定ではローカルに保存されます。WordPressのプラグインを使うことでAmazon S3に画像ファイルやcssファイル、jsファイルをアップロードすることができます。S3にアップロードできれば、静的コンテンツが増えすぎてWebサーバのストレージが一杯になったということがなくなります。
またAWSにはAmazon CloudFrontというコンテンツ配信のサービスがあります。CloudFrontに静的コンテンツを配置することで配信速度はローカルの場合よりも高速化し、オリジンへの負荷を軽減できます。S3やCloudFrontと連携できるプラグインとしては以下のプラグインがあります。
- Amazon S3 and CloudFrontプラグイン
- メディアファイルをS3にアップロードできるプラグインです。 Amazon Web Serviceプラグインも一緒にインストールする必要があります。
- W3 Total Cacheプラグイン
- WordPressのキャッシュプラグインとしては有名なプラグインです。 W3 Total Cacheプラグインに関しては以下の記事に詳しく書かれているのでご覧下さい。 【WordPress】W3 Total CacheプラグインでアップロードファイルをCDN(CloudFront)経由で配信する+キャッシュ
Amazon S3 and CloudFrontプラグインの場合を見てみましょう。まずはアクセスキー、シークレットキーを設定します。
アクセスキー、シークレットキーを設定するとバケットを選択できるようになるのでバケット選択後、各種設定を行います。
実際に手を動かして試したい方は以下のページに手順がまとまっているのでご覧ください。
AWS CloudFrontを使ってWordPressのメディアファイルだけS3に配置する
CloudFrontを使うメリットは以下のページにかなり詳しく書いてありますのでぜひご覧ください。
WP管理者必見!AWSで構築する新スケーラブルなWordPress構成〜CloudFront as Reverse Proxy
2.ローカルに静的コンテンツを置かないことでスケールアウトできる
WordPressではデフォルトでは管理画面からアップロードした静的コンテンツはローカルに置かれます。この場合、ロードバランサーを使ってサーバを複数台構成にすることは難しくなります。静的コンテンツをS3にアップロードし、ローカルにファイルを置かないようにすればElastic Load BalansingやAuto Scalingを使ってスケールアウトしやすくなります。サーバを複数台にすることにより可用性、パフォーマンスも向上するでしょう。以下の構成図のようにMultiAZ構成にしたり管理画面用のインスタンスを分けてしまうこともできます。このような構成が一般的ではないでしょうか。
注意点としては静的コンテンツをS3に配置しても、ダウンロードしたWordPressプラグインやテーマ、プラグインを使って出力したキャッシュはローカルに置かれます。WordPressプラグイン、テーマを更新した場合は更新したアプリを再度デプロイするか、Auto Scalingを使っている場合はAMIを再作成する必要があります。まだプレビュー版ですがAmazon Elastic File SystemというAWSの新しいサービスを使えば今後この課題は解消できるかもしれません。興味がある方は以下の記事をご覧ください。
WordPress on AWSでAmazon Elastic File System(EFS)を試してみた
3.構築したHTMLファイルをS3でホスティングできる
動的処理ができなくなるという制約つきですが、StaticPress、Staticpress-s3というプラグインを使えばHTMLを生成してS3にアップロードできます。アップロードされたHTMLファイルはS3の静的Webサイトホスティング機能を使って公開することが可能です。
以下の記事を参考にさせていただきました。
StaticPress プラグインで静的 HTML を生成して Amazon S3 で公開してみる XX砲なんてもう何も怖くない!WordPressを195倍高速化するAmazonS3とStaticPressを使った運用術!
4.簡単にWordPressのバックアップが作成できる
プラグインを使うことでWordPress自身のバックアップをS3にアップロードすることができるようになります。私は UpdraftPlus Backup and Restoration というプラグインを試してみました。以下のようにアクセスキーとシークレットキー、あとはアップロード先のS3のパスを指定するだけでした。テーマやプラグイン、データベースの情報や静的コンテンツをバックアップできます。もちろんWordPressの画面からリストアも可能です。
設定後、バックアップを取得すると以下のようにS3にバックアップが取得できているのを確認できました。
5.Web開発に便利なサービスが使える
Webシステム開発全般にいえることですが、AWSのRDBサービスやDNSサービス、モニタリングサービスが使えます。WordPressはコンテンツの管理にデータベースを使います。RDBはデフォルトではMySQLを使います。EC2上にRDBをインストールすることもできますが、フルマネージドサービスのAmazon RDSを使えばMulti AZ構成にして可用性を確保したり、バックアップを自動で取得してくれますのでおススメです。また、実際にサイトを公開する際には独自ドメインを取得するかと思いますが、独自ドメインの取得とIPアドレスの紐づけはDNSサービスのAmazon Route 53で行うことができます。モニタリングサービスはCloudWatchを使えます。CPU使用率などをモニタリングしてアラートメールを送信することができます。
ドメインの購入に関しては以下のページが参考になりました。
6.Elastic Beanstalkを使って簡単に構築できる
Elastic BeanstalkとはAWSが提供しているPaaS(Platform-as-a-Service)になります。これを使うことで一部設定が自動化されるためより簡単にWordPressをAWSに構築することができます。Single Instanceの場合であれば公式サイトからダウンロードしたzipファイルをElastic Beanstalkにアップロードし少しの設定を行うだけです。10数分で構築できます。(その内、10分位はRDSの起動時間です。)サーバを複数台構成にする場合は少し手間が必要です。複数台構成の構築手順は以下の記事をご覧ください。
AWS Elastic Beanstalk+WordPressで簡単にWebサイトを作る
Elastic Beanstalkを使うと以下の作業を自動でやってくれます。
- EC2にPHPの実行環境やWebサーバのインストール
- Elastic Load Balancing の作成
- Auto Scaling のグループ作成
- Security Group の作成
- S3 のバケット作成(アプリケーションファイルとサーバーログファイル用)
- CloudWatch の設定
7.[おまけ]Amazon SESと連携できる
他にもAWSのメール配信サービスであるAmazon SESと連携できるWP SESやAmazon SES DKIM MailerというWordPressプラグインもありました。まだ使いどころがいまいち分からないのでこれから調査してまた次回情報発信しようと思っています。
WP SES
Amazon SES DKIM Mailer
最後に
いかがだったでしょうか。私は初めてAWS上でWordPressを構築してみたのですがAWSの各種サービスと連携しやすくとてもやりやすかったです。まだ勉強し始めたばかりなのですが、これからも引き続きAWS連携できるWordPressプラグインを探して紹介したり、WordPressプラグインを自分で実装したりしてみたいと思います。